
const validator = require('./errorcallback')
const {body} = require('express-validator')
//自定义密码检测器
const {passwordValidator,isExitInDB} = require('./validatorFun')
const { Error } = require('mongoose')

//注册检测
exports.registValidator = validator([
    body('name').notEmpty().withMessage('用户名字不能为空').bail()
    .isLength({ min: 3 }).withMessage('用户名字长度不能小于3').bail()
    .custom((value)=>{
        return isExitInDB('name',value)
    }).bail(),

    body('email').isEmail().withMessage('邮箱不符合格式要求').bail()
    .notEmpty().withMessage('邮箱不能为空').bail()
    .custom((value)=>{
        return isExitInDB('email',value)
    }).bail(),

    body('password').notEmpty().withMessage('密码不能为空').bail()
    .isLength({ min: 5 }).withMessage('密码长度不能小于5').bail()
    .custom(passwordValidator),

    body('phone').notEmpty().withMessage('手机号不能为空').bail()
    .isMobilePhone().withMessage('手机格式错误').bail()
    .custom((value)=>{
        return isExitInDB('phone',value)
    }).bail(),
])

//登录检测
exports.loginValidator = validator([
    body().custom( (value, { req }) => {
        if (!req.body.name && !req.body.email) {
            throw new Error('账户和邮箱请输入一个')
        }
        //记得要return true  进行判断
        return true

    }).bail()
])

//修改检测
exports.updateValidator = validator([
    body('name')
    .custom((value)=>{
        return isExitInDB('name',value)
    }).bail(),
    body('email')
    .custom((value)=>{
        return isExitInDB('email',value)
    }).bail(),
    body('phone')
    .custom((value)=>{
        return isExitInDB('phone',value)
    }).bail(),
])




